package cn.itcast.web.controller.company;

import cn.itcast.domain.company.Company;
import cn.itcast.service.company.CompanyService;
import cn.itcast.web.controller.BaseController;
import com.alibaba.dubbo.config.annotation.Reference;
import com.github.pagehelper.PageInfo;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.apache.shiro.subject.Subject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.List;

@Controller
@RequestMapping("/company")
public class CompanyController extends BaseController {

    @Reference
    private CompanyService companyService;


    /*
        查询全部企业
     */
    @RequestMapping("/list")
    @RequiresPermissions("企业管理")
    public String list(@RequestParam(defaultValue = "1") Integer pageNum,@RequestParam(defaultValue = "5") Integer pageSize){
        //硬编码方式检查权限
      /*  Subject subject = SecurityUtils.getSubject();
        subject.checkPermission("企业管理");
*/
        //1. 查询到企业列表页面
        PageInfo<Company> pageInfo = companyService.findByPage(pageNum,pageSize);

        //2. 存储request域中
        request.setAttribute("pageInfo",pageInfo);
        //3. 回到页面
        return "company/company-list";
    }



    /*
       url：/company/toAdd.do
       作用：进入企业添加页面
       参数：无
       返回值： company/company-add
    */
    @RequestMapping("/toAdd")
    public String toAdd(){
        return "company/company-add";
    }


    /*
     url：/company/edit.do
     作用：保存添加与保存更新企业
     参数：企业对象
     返回值： 企业列表
  */
    @RequestMapping("/edit")
    public String edit(Company company){
        //1. 判断企业对象是否携带id
        //if(company.getId()==null || "".equals(company.getId())){
        if(StringUtils.isEmpty(company.getId())){
            //2. 如果没有携带id过来则是添加
            companyService.save(company);
        }else{
            //3. 如果携带id过来则是修改
            companyService.update(company);
        }
        //4. 回到企业列表页面
        return "redirect:/company/list.do";
    }

    /*
        url：/company/toUpdate.do?id=02e1da04-43f8-42e1-a4c2-66e162c6f4a5
        作用：进入更新企业页面
        参数：id 企业id
        返回值： 企业更新页面
     */
    @RequestMapping("/toUpdate")
    public String toUpdate(String id){
        //1. 根据企业id查询企业
       Company company =  companyService.findById(id);
        //2. 把企业对象存储到request域
        request.setAttribute("company",company);

        //3. 请求转发到企业更新页面
        return "company/company-update";
    }


    /*
       url：/company/delete.do?id=02e1da04-43f8-42e1-a4c2-66e162c6f4a5
       作用：删除企业
       参数：id 企业id
       返回值： 企业列表页面
    */
    @RequestMapping("/delete")
    public String delete(String id){
        companyService.delete(id);
        return "redirect:/company/list.do";

    }
}
